package com.zbkj.admin.response;


import com.baomidou.mybatisplus.annotation.TableField;
import com.zbkj.admin.sensitive.Sensitive;
import com.zbkj.admin.sensitive.SensitiveTypeEnum;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

import java.io.Serial;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.HashMap;
import java.util.List;

/**
 * 个人中心响应对象
 *  +----------------------------------------------------------------------
 *  | CRMEB [ CRMEB赋能开发者，助力企业发展 ]
 *  +----------------------------------------------------------------------
 *  | Copyright (c) 2016~2025 https://www.crmeb.com All rights reserved.
 *  +----------------------------------------------------------------------
 *  | Licensed CRMEB并不是自由软件，未经许可不能去掉CRMEB相关版权
 *  +----------------------------------------------------------------------
 *  | Author: CRMEB Team <admin@crmeb.com>
 *  +----------------------------------------------------------------------
 */
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@Schema(description = "UserCenterResponse对象 个人中心响应对象")
public class UserCenterResponse implements Serializable {

    @Serial
    private static final long serialVersionUID=1L;

    @Schema(description = "用户ID")
    private Integer id;

    @Schema(description = "用户code")
    private String Icode;

    @Schema(description = "用户昵称")
    private String nickname;

    @Schema(description = "用户头像")
    private String avatar;

    @Schema(description = "手机号码")
    private String phone;

    @Schema(description = "用户剩余积分")
    private Integer integral;

    @Schema(description = "用户剩余经验")
    private Integer experience;

    @Schema(description = "等级")
    private Integer level;

    @Schema(description = "是否为推广员")
    private Boolean isPromoter;

    @Schema(description = "用户优惠券数量")
    private Integer couponCount;

    @Schema(description = "是否会员")
    private Boolean isVip;

    @Schema(description = "会员图标")
    private String vipIcon;

    @Schema(description = "会员名称")
    private String vipName;

    @Schema(description = "用户收藏数量")
    private Integer collectCount;

    @Schema(description = "用户足迹数量")
    private Integer browseNum;

    @Schema(description = "个人中心banner")
    private List<HashMap<String, Object>> centerBanner;

    @Schema(description = "个人中心服务")
    private List<HashMap<String, Object>> centerMenu;

    @Schema(description = "是否付费会员")
    private Boolean isPaidMember;

    @Schema(description = "付费会员入口：1-开启，0-关闭")
    private Integer paidMemberPaidEntrance = 0;

//    @Schema(description = "移动端商家管理 - 当前最新token - 作用于移动端商家管理")
//    private LoginResponse loginResponse;

    @Schema(description = "是否移动端商家管理员")
    private Boolean isEmployee = false;

    @Schema(description = "积分")
    private String points;

    @Schema(description = "金币")
    private String goldCoin;

    @Schema(description = "抵用券")
    private String voucher;

    @Schema(description = "身份证")
    private String identity;

    @Schema(description = "身份证名字")
    private String identityName;

    @Schema(description = "身份证有效期开始")
    private LocalDateTime identityVld;

    @Schema(description = "身份证有效期结束")
    private LocalDateTime identityVldEnd;

    @Schema(description = "身份证图片")
//    @TableField(exist = false)
    private String identityUrl;

    @Schema(description = "身份证图片")
    @TableField(exist = false)
    private String identityUrl1;

    @Schema(description = "待付款")
    private BigDecimal obligation;

    @Schema(description = "待发货")
    private BigDecimal pendingGoods;

    @Schema(description = "待收货")
    private BigDecimal pendingDelivery;

    @Sensitive(type = SensitiveTypeEnum.BANK_CARD)
    @Schema(description = "银行卡")
    private String icId;
}
